package moduleFrame
{
	import flash.events.Event;
	
	import moduleFrame.interfaces.IMaper;
	import moduleFrame.interfaces.ISender;

	/**
	 * 基本角色，只有发消息，不能听消息，多用于model层继承
	 * @author Pelephone
	 */
	public class ActorBase extends Maper implements ISender
	{
		public function ActorBase(aliasName:String=null)
		{
			super(aliasName);
		}
		
		/**
		 * 托管全局事件
		 */
		public function dispatchRootEvent(event:Event):Boolean
		{
			return getMapRoot().dispatchEvent(event);
		}
		
		/**
		 * 托管模块事件(只当前模块内消息有效)
		 */
		public function dispatchModuleEvent(event:Event):Boolean
		{
			return getMapParent().dispatchEvent(event);
		}
		
		/**
		 * 获取映射在框架上的单例
		 * @return 
		 */
		protected function getMapObject(aliasName:String):IMaper
		{
			// 先从全局上查是否有映射存在
			var res:IMaper = getMapRoot().getChildMaper(aliasName);
			if(res) return res;
			// 全局没有再从本模块中找
			return getMapParent().getChildMaper(aliasName);
		}
		
		/**
		 * 获取映射在框架上的单例
		 * @return 
		 */
		protected function getMapObjectOf(refObj:Object):*
		{
			// 先从全局上查是否有映射存在
			var res:IMaper = getMapRoot().getChildMaperOf(refObj);
			if(res) return res;
			// 全局没有再从本模块中找
			return getMapParent().getChildMaperOf(refObj);
		}
	}
}